﻿#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdbool.h>

/***********************六.函数************************/

/******* 7. 嵌套调⽤和链式访问********/
//7.2 链式访问
//所谓链式访问就是将⼀个函数的返回值作为另外⼀个函数的参数，像链条⼀样将函数串起来就是函数的链式访问

//int main()
//{
//	size_t len = strlen("abc");
//	printf("%zd\n",len);
//	return 0;
//}
//

//链式访问
//int main()
//{
//	printf("%zd",strlen("abc"));
//	return 0;
//}

//int main()
//{
//	//printf返回值返回的是字符个数，43，先两个字符，2,一个字符，1
//	printf("%d",printf("%d",printf("%d",43)));
//	return 0;
//}

/**********8. 函数的声明和定义**********/

//8.1 单个⽂件

//函数定义————也是一种特殊的声明
//int is_leap_year(int y)
//{
//	if (((y % 4 == 0) && (y % 100 != 0)) || (y % 400 == 0))
//		return 1;
//	else
//		return 0;
//}

//int is_leap_year(int y)
//{
//	return (((y % 4 == 0) && (y % 100 != 0)) || (y % 400 == 0));
//}

//bool is_leap_year(int y)
//{
//	return (((y % 4 == 0) && (y % 100 != 0)) || (y % 400 == 0));
//}

//函数声明
//int is_leap_year(int y);
//
//int main()
//{
//	int year = 0;
//	scanf("%d", &year);
//	 
//	//判断
//	//函数使用要保证：先声明后使用
//	if (is_leap_year(year))//函数调用
//		printf("%d是闰年",year);
//	else
//		printf("%d不是闰年",year);
//	return 0;
//}
//
//int is_leap_year(int y)
//{
//	if (((y % 4 == 0) && (y % 100 != 0)) || (y % 400 == 0))
//		return 1;
//	else
//		return 0;
//}


//8.2 多个⽂件

//头文件的包含本质上就是完成了函数的声明
#include "leap.h"//使用自己头文件中声明的函数，使用""

//int main()
//{
//	int year = 0;
//	scanf("%d", &year);
//	 
//	//判断
//	if (is_leap_year(year))//函数调用
//		printf("%d是闰年",year);
//	else
//		printf("%d不是闰年",year);
//	return 0;
//}


//8.3 static 和extern

// static和extern都是C语⾔中的关键字

//static 是静态的的意思，可以⽤来：

//修饰局部变量
//void test()
//{
//	static int n = 5; //static修饰的变量在出函数时，是不会销毁的，下次进入函数依然存在，不会重新创建
//					  //生命周期变的和全局变量一样长了，但作用域依旧没变，只在这个函数内
					  //本质改变了类型，把栈区的局部变量改变成静态区的静态变量

//	n++;
//	printf("%d ",n);
//}
//int main()
//{
//	int i = 0;
//	for (i = 0; i < 5; i++)
//	{
//		test();
//	}
//	return 0;
//}

//修饰全局变量
//extern 是⽤来声明外部符号的

//extern int g_val;
//
//void test()
//{
//	printf("2: %d\n",g_val);
//}
//
//int main()
//{
//	
//	printf("1: %d\n",g_val);
//	test();
//
//	return 0;
//}

//修饰函数
//声明来自外部的函数
//extern int Add(int x, int y);
//
//int main()
//{
//	int a = 0;
//	int b = 0;
//	scanf("%d %d",&a,&b);
//	int c = Add(a,b);
//	printf("%d\n",c);
//	return 0;
//}








